#ifndef unigame_Render_h
#define unigame_Render_h

#include "transform/Matrix4x4.h"
#include "transform/Matrix.h"

namespace unigame
{
    class Render
    {
    public:
        virtual ~Render(){}
        
        static Render* instance();
		static void destroy();
        
        virtual void init() = 0;

		virtual void renderStart() = 0;
		virtual void renderEnd() = 0;

		virtual void setContext(void* hdc){};
		virtual void deleteContext(){};

		virtual void setColor(float r, float g, float b, float a) = 0;
		virtual void enableDepth(bool isEnable) = 0;

		virtual void setProjectMatrix(const Matrix4x4f& m) = 0;
		virtual void setViewMatrix(const Matrixf& m) = 0;

		virtual void setViewPort(float x, float y, float w, float h) = 0;

		virtual void test() = 0;
        
    protected:
        static Render* s_instance;
        
        Render(){}
    };
}
#endif
